//struct ListNode* getIntersectionNode(struct ListNode* headA, struct ListNode* headB) {
//    struct ListNode* curA = headA, * curB = headB;
//    int lenA = 1, lenB = 1;
//    while (curA->next)
//    {
//        curA = curA->next;
//        ++lenA;
//    }
//    while (curB->next)
//    {
//        curB = curB->next;
//        ++lenB;
//    }
//    if (curA != curB)
//    {
//        return NULL;
//    }
//    int gap = abs(lenA - lenB);
//    struct ListNode* longlist = headA, * shortlist = headB;
//    if (lenA < lenB)
//    {
//        longlist = headB;
//        shortlist = headA;
//
//    }
//    while (gap--)
//    {
//        longlist = longlist->next;
//    }
//    while (longlist != shortlist)
//    {
//        longlist = longlist->next;
//        shortlist = shortlist->next;
//
//
//    }
//    return longlist;
//}